package qc.module.qms.dto.alarm;

import lombok.Data;

import java.util.List;

/**
 * QMS点号数据值告警判定结果，一个时间点的点号数据判定结果，可能触发多条告警规则（多条告警、多条防误处理结果）
 * 一个判定结果中可能有多条规则的判定结果，触发的告警和防误处理从告警规则判断结果集合中获取
 *
 * @author QuCheng Tech
 * @since 2025/10/18
 */
@Data
public class QmsPointDataValueAlarmJudgeResultDto {
    /**
     * 是否为演习/测试模式，演习模式
     * 不在判定结果中标识是否是演习，由调用方自己控制
     */
    //private boolean isSimulationMode;

    /**
     * 所有有效的告警规则数量
     */
    private int alarmRuleCount;

    /**
     * 是否触发告警，触发任意一条告警规则即为true，不管告警的等级
     */
    private boolean hasTriggerAlarm;

    /**
     * 触发产生告警的规则数量，包含所有触发告警的等级（取消告警和触发告警）
     */
    private int triggerAlarmRuleCount;

    /**
     * 是否触发防误处理，触发任意一条告警规则的防误处理即为true，不管告警的等级
     */
    private boolean hasTriggerErrorProof;

    /**
     * 触发防误处理的规则数量
     */
    private int triggerErrorProofRuleCount;

    /**
     * 错误信息；用于判定是否告警的输入条件错误或处理过程中的异常提示信息
     */
    private String errorMsg;

    /**
     * 告警规则判定结果集合，所有针对当前点号有效的告警规则判定结果（不管是否触发告警或防误处理）
     * 需要获取触发告警的等级或者告警的状态，需要遍历此集合获取；可能有多个告警规则触发的告警等级和状态不同
     * 需要获取触发防误处理的字段和设置的数据值，需要遍历此集合获取；可能有多个字段同时进行防误处理，或一个字段不同告警规则进行防误处理设置的数据值不同
     */
    private List<QmsPointDataValueAlarmRuleJudgeResultDto> ruleJudgeResults;
}
